[INFO] cloning repository https://github.com/mayaswap/pscan
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/mayaswap/pscan" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmayaswap%2Fpscan", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmayaswap%2Fpscan'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 149b4553aec9dcb5ec8beacdaa7a37bda346ec80
[INFO] fixing mayaswap/pscan against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmayaswap%2Fpscan" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/mayaswap/pscan
[INFO] finished tweaking git repo https://github.com/mayaswap/pscan
[INFO] tweaked toml for git repo https://github.com/mayaswap/pscan written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/mayaswap/pscan on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/mayaswap/pscan already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 41cc31ebe366588e68094cb6b96fca02abd639371427ffe3aef5a751504ac0a1
[INFO] running `Command { std: "docker" "start" "41cc31ebe366588e68094cb6b96fca02abd639371427ffe3aef5a751504ac0a1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "41cc31ebe366588e68094cb6b96fca02abd639371427ffe3aef5a751504ac0a1" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "41cc31ebe366588e68094cb6b96fca02abd639371427ffe3aef5a751504ac0a1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "41cc31ebe366588e68094cb6b96fca02abd639371427ffe3aef5a751504ac0a1" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating crates/etherescan-common/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/etherescan-api/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/etherescan-prices/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/etherescan-indexer/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]    Compiling zerocopy v0.8.31
[INFO] [stderr]     Checking tracing-core v0.1.35
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling cc v1.2.48
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking simd-adler32 v0.3.7
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling generic-array v0.14.9
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]     Checking compression-core v0.4.31
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]     Checking iri-string v0.7.9
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]     Checking rustls-pki-types v1.13.1
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]     Checking pest v2.8.4
[INFO] [stderr]     Checking deranged v0.5.5
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]     Checking time-core v0.1.6
[INFO] [stderr]    Compiling ruint-macro v1.2.1
[INFO] [stderr]     Checking arraydeque v0.5.1
[INFO] [stderr]     Checking flate2 v1.1.7
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking convert_case v0.6.0
[INFO] [stderr]     Checking compression-codecs v0.4.33
[INFO] [stderr]     Checking ruint v1.17.0
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking backon v1.6.0
[INFO] [stderr]     Checking const-hex v1.17.0
[INFO] [stderr]     Checking spinning_top v0.3.0
[INFO] [stderr]     Checking bstr v1.12.1
[INFO] [stderr]     Checking arc-swap v1.7.1
[INFO] [stderr]     Checking no-std-compat v0.4.1
[INFO] [stderr]     Checking nonzero_ext v0.3.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking signal-hook-registry v1.4.7
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking time v0.3.44
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking uuid v1.19.0
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking lz4_flex v0.11.5
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking cityhash-rs v1.0.1
[INFO] [stderr]     Checking replace_with v0.1.8
[INFO] [stderr]     Checking futures-timer v3.0.3
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]     Checking regex-syntax v0.8.8
[INFO] [stderr]     Checking sha1_smol v1.0.1
[INFO] [stderr]     Checking web-time v1.1.0
[INFO] [stderr]    Compiling pest_meta v2.8.4
[INFO] [stderr]     Checking data-encoding v2.9.0
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]    Compiling multer v3.1.0
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]     Checking dlv-list v0.5.2
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking quanta v0.12.6
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking hashlink v0.8.4
[INFO] [stderr]     Checking ordered-multimap v0.7.3
[INFO] [stderr]     Checking dashmap v6.1.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking rust-ini v0.20.0
[INFO] [stderr]     Checking yaml-rust2 v0.8.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling pest_generator v2.8.4
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling derive_more-impl v2.1.0
[INFO] [stderr]    Compiling sealed v0.6.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]    Compiling pest_derive v2.8.4
[INFO] [stderr]    Compiling clickhouse-derive v0.2.0
[INFO] [stderr]     Checking tracing v0.1.43
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking thiserror v2.0.17
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.1
[INFO] [stderr]     Checking derive_more v2.1.0
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking governor v0.8.1
[INFO] [stderr]     Checking bytes v1.11.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking ron v0.8.1
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking alloy-rlp v0.3.12
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking alloy-primitives v0.8.26
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking tungstenite v0.24.0
[INFO] [stderr]     Checking headers-core v0.3.0
[INFO] [stderr]     Checking headers v0.4.1
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking config v0.14.1
[INFO] [stderr]     Checking tokio-util v0.7.17
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking async-compression v0.4.34
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tokio-tungstenite v0.24.0
[INFO] [stderr]     Checking h2 v0.4.12
[INFO] [stderr]     Checking tower-http v0.6.7
[INFO] [stderr]     Checking combine v4.6.7
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking redis v0.27.6
[INFO] [stderr]     Checking hyper-util v0.1.19
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking clickhouse v0.13.3
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking reqwest v0.12.24
[INFO] [stderr]     Checking etherescan-prices v0.1.0 (/opt/rustwide/workdir/crates/etherescan-prices)
[INFO] [stderr]    Migrating crates/etherescan-prices/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]     Checking axum-extra v0.9.6
[INFO] [stderr]     Checking etherescan-common v0.1.0 (/opt/rustwide/workdir/crates/etherescan-common)
[INFO] [stderr]    Migrating crates/etherescan-common/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed crates/etherescan-common/src/db/redis.rs (5 fixes)
[INFO] [stderr]     Checking etherescan-api v0.1.0 (/opt/rustwide/workdir/crates/etherescan-api)
[INFO] [stderr]     Checking etherescan-indexer v0.1.0 (/opt/rustwide/workdir/crates/etherescan-indexer)
[INFO] [stderr]    Migrating crates/etherescan-indexer/src/main.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating crates/etherescan-api/src/main.rs from 2021 edition to 2024
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/etherescan-api/src/routes/transactions.rs:210:31
[INFO] [stdout]     |
[INFO] [stdout] 198 |           let block_response = client
[INFO] [stdout]     |  _____________--------------___-
[INFO] [stdout]     | |             |
[INFO] [stdout]     | |             `block_response` calls a custom destructor
[INFO] [stdout]     | |             `block_response` will be dropped later as of Edition 2024
[INFO] [stdout] 199 | |             .post(&state.rpc_url)
[INFO] [stdout] 200 | |             .json(&json!({
[INFO] [stdout] 201 | |                 "jsonrpc": "2.0",
[INFO] [stdout] ...   |
[INFO] [stdout] 206 | |             .send()
[INFO] [stdout] 207 | |             .await;
[INFO] [stdout]     | |              -----
[INFO] [stdout]     | |              |   |
[INFO] [stdout]     | |______________|___`__awaitee` calls a custom destructor
[INFO] [stdout]     |                |   `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout]     |                this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 210 |               if let Ok(data) = resp.json::<RpcResponse<RpcBlock>>().await {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-----
[INFO] [stdout]     |                                 |                                    |
[INFO] [stdout]     |                                 |                                    this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |                                 |                                    up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                                 |                                    this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                                 |                                    `#3` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                 this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                                 up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                                 this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                 `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 221 |           }
[INFO] [stdout]     |           - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.0/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `block_response` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `block_response` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.0/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.0/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.0/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/etherescan-api/src/ws/mod.rs:171:30
[INFO] [stdout]     |
[INFO] [stdout] 171 |     while let Some(result) = receiver.next().await {
[INFO] [stdout]     |                    ------    ^^^^^^^^^^^^^^^^-----
[INFO] [stdout]     |                    |         |               |
[INFO] [stdout]     |                    |         |               this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                    |         |               `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                    |         this value will be stored in a temporary; let us call it `#11`
[INFO] [stdout]     |                    |         up until Edition 2021 `#11` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                    `result` calls a custom destructor
[INFO] [stdout]     |                    `result` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 178 |                                 let mut subs = subscriptions.write().await;
[INFO] [stdout]     |                                     --------   ---------------------------
[INFO] [stdout]     |                                     |          |                     |
[INFO] [stdout]     |                                     |          |                     this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                     |          |                     `#2` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                     |          `__awaitee` calls a custom destructor
[INFO] [stdout]     |                                     |          `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                     `subs` calls a custom destructor
[INFO] [stdout]     |                                     `subs` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 185 |                                         let mut watchers = state.ws_state.address_watchers.write().await;
[INFO] [stdout]     |                                             ------------   ---------------------------------------------
[INFO] [stdout]     |                                             |              |                                       |
[INFO] [stdout]     |                                             |              |                                       this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                                             |              |                                       `#4` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                             |              this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                                             |              `#3` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                             `watchers` calls a custom destructor
[INFO] [stdout]     |                                             `watchers` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 195 |                                 let mut subs = subscriptions.write().await;
[INFO] [stdout]     |                                     --------   ---------------------------
[INFO] [stdout]     |                                     |          |                     |
[INFO] [stdout]     |                                     |          |                     this value will be stored in a temporary; let us call it `#7`
[INFO] [stdout]     |                                     |          |                     `#7` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                     |          this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     |                                     |          `#6` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                     this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |                                     `#5` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 202 |                                         let mut watchers = state.ws_state.address_watchers.write().await;
[INFO] [stdout]     |                                             ------------   ---------------------------------------------
[INFO] [stdout]     |                                             |              |                                       |
[INFO] [stdout]     |                                             |              |                                       this value will be stored in a temporary; let us call it `#10`
[INFO] [stdout]     |                                             |              |                                       `#10` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                             |              this value will be stored in a temporary; let us call it `#9`
[INFO] [stdout]     |                                             |              `#9` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                             this value will be stored in a temporary; let us call it `#8`
[INFO] [stdout]     |                                             `#8` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 224 |             Err(e) => {
[INFO] [stdout]     |                 -
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `e` calls a custom destructor
[INFO] [stdout]     |                 `e` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 230 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#11` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `result` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `subs` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `watchers` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#5` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#7` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#8` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#10` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `e` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/etherescan-api/src/routes/transactions.rs:210:31
[INFO] [stdout]     |
[INFO] [stdout] 198 |           let block_response = client
[INFO] [stdout]     |  _____________--------------___-
[INFO] [stdout]     | |             |
[INFO] [stdout]     | |             `block_response` calls a custom destructor
[INFO] [stdout]     | |             `block_response` will be dropped later as of Edition 2024
[INFO] [stdout] 199 | |             .post(&state.rpc_url)
[INFO] [stdout] 200 | |             .json(&json!({
[INFO] [stdout] 201 | |                 "jsonrpc": "2.0",
[INFO] [stdout] ...   |
[INFO] [stdout] 206 | |             .send()
[INFO] [stdout] 207 | |             .await;
[INFO] [stdout]     | |              -----
[INFO] [stdout]     | |              |   |
[INFO] [stdout]     | |______________|___`__awaitee` calls a custom destructor
[INFO] [stdout]     |                |   `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout]     |                this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 210 |               if let Ok(data) = resp.json::<RpcResponse<RpcBlock>>().await {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-----
[INFO] [stdout]     |                                 |                                    |
[INFO] [stdout]     |                                 |                                    this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |                                 |                                    up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                                 |                                    this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                                 |                                    `#3` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                 this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                                 up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                                 this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                 `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 221 |           }
[INFO] [stdout]     |           - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.0/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `block_response` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `block_response` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.0/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.0/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.0/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> crates/etherescan-api/src/ws/mod.rs:171:30
[INFO] [stdout]     |
[INFO] [stdout] 171 |     while let Some(result) = receiver.next().await {
[INFO] [stdout]     |                    ------    ^^^^^^^^^^^^^^^^-----
[INFO] [stdout]     |                    |         |               |
[INFO] [stdout]     |                    |         |               this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                    |         |               `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                    |         this value will be stored in a temporary; let us call it `#11`
[INFO] [stdout]     |                    |         up until Edition 2021 `#11` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                    `result` calls a custom destructor
[INFO] [stdout]     |                    `result` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 178 |                                 let mut subs = subscriptions.write().await;
[INFO] [stdout]     |                                     --------   ---------------------------
[INFO] [stdout]     |                                     |          |                     |
[INFO] [stdout]     |                                     |          |                     this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                     |          |                     `#2` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                     |          `__awaitee` calls a custom destructor
[INFO] [stdout]     |                                     |          `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                     `subs` calls a custom destructor
[INFO] [stdout]     |                                     `subs` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 185 |                                         let mut watchers = state.ws_state.address_watchers.write().await;
[INFO] [stdout]     |                                             ------------   ---------------------------------------------
[INFO] [stdout]     |                                             |              |                                       |
[INFO] [stdout]     |                                             |              |                                       this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                                             |              |                                       `#4` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                             |              this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                                             |              `#3` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                             `watchers` calls a custom destructor
[INFO] [stdout]     |                                             `watchers` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 195 |                                 let mut subs = subscriptions.write().await;
[INFO] [stdout]     |                                     --------   ---------------------------
[INFO] [stdout]     |                                     |          |                     |
[INFO] [stdout]     |                                     |          |                     this value will be stored in a temporary; let us call it `#7`
[INFO] [stdout]     |                                     |          |                     `#7` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                     |          this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     |                                     |          `#6` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                     this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |                                     `#5` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 202 |                                         let mut watchers = state.ws_state.address_watchers.write().await;
[INFO] [stdout]     |                                             ------------   ---------------------------------------------
[INFO] [stdout]     |                                             |              |                                       |
[INFO] [stdout]     |                                             |              |                                       this value will be stored in a temporary; let us call it `#10`
[INFO] [stdout]     |                                             |              |                                       `#10` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                             |              this value will be stored in a temporary; let us call it `#9`
[INFO] [stdout]     |                                             |              `#9` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                             this value will be stored in a temporary; let us call it `#8`
[INFO] [stdout]     |                                             `#8` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 224 |             Err(e) => {
[INFO] [stdout]     |                 -
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `e` calls a custom destructor
[INFO] [stdout]     |                 `e` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 230 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#11` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `result` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `subs` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `watchers` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#5` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#7` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#8` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#10` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `e` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 05s
[INFO] [stderr] crater-edition-check: etherescan-common v0.1.0 (/opt/rustwide/workdir/crates/etherescan-common) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: etherescan-api v0.1.0 (/opt/rustwide/workdir/crates/etherescan-api) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: etherescan-prices v0.1.0 (/opt/rustwide/workdir/crates/etherescan-prices) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: etherescan-indexer v0.1.0 (/opt/rustwide/workdir/crates/etherescan-indexer) updating edition from 2021 to 2024
[INFO] [stderr]     Checking etherescan-common v0.1.0 (/opt/rustwide/workdir/crates/etherescan-common)
[INFO] [stderr]     Checking etherescan-prices v0.1.0 (/opt/rustwide/workdir/crates/etherescan-prices)
[INFO] [stdout] warning: struct `CoinGeckoSimplePrice` is never constructed
[INFO] [stdout]   --> crates/etherescan-prices/src/lib.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct CoinGeckoSimplePrice {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CoinGeckoTokenPrice` is never constructed
[INFO] [stdout]   --> crates/etherescan-prices/src/lib.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | struct CoinGeckoTokenPrice {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::*`
[INFO] [stdout]  --> crates/etherescan-common/src/db/clickhouse.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::types::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::*`
[INFO] [stdout]  --> crates/etherescan-common/src/db/clickhouse.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::types::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CoinGeckoSimplePrice` is never constructed
[INFO] [stdout]   --> crates/etherescan-prices/src/lib.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct CoinGeckoSimplePrice {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CoinGeckoTokenPrice` is never constructed
[INFO] [stdout]   --> crates/etherescan-prices/src/lib.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | struct CoinGeckoTokenPrice {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `database` is never read
[INFO] [stdout]   --> crates/etherescan-common/src/db/clickhouse.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ClickHouseClient {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 13 |     client: Client,
[INFO] [stdout] 14 |     database: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ClickHouseClient` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `transaction_hash`, `block_number`, and `logs` are never read
[INFO] [stdout]    --> crates/etherescan-common/src/reth/mod.rs:98:5
[INFO] [stdout]     |
[INFO] [stdout]  97 | struct RpcReceipt {
[INFO] [stdout]     |        ---------- fields in this struct
[INFO] [stdout]  98 |     transaction_hash: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]  99 |     block_number: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     logs: Vec<RpcLog>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RpcReceipt` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking etherescan-indexer v0.1.0 (/opt/rustwide/workdir/crates/etherescan-indexer)
[INFO] [stderr]     Checking etherescan-api v0.1.0 (/opt/rustwide/workdir/crates/etherescan-api)
[INFO] [stdout] warning: field `database` is never read
[INFO] [stdout]   --> crates/etherescan-common/src/db/clickhouse.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ClickHouseClient {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 13 |     client: Client,
[INFO] [stdout] 14 |     database: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ClickHouseClient` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `transaction_hash`, `block_number`, and `logs` are never read
[INFO] [stdout]    --> crates/etherescan-common/src/reth/mod.rs:98:5
[INFO] [stdout]     |
[INFO] [stdout]  97 | struct RpcReceipt {
[INFO] [stdout]     |        ---------- fields in this struct
[INFO] [stdout]  98 |     transaction_hash: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]  99 |     block_number: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     logs: Vec<RpcLog>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RpcReceipt` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]   --> crates/etherescan-indexer/src/main.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tracing::{error, info, warn};
[INFO] [stdout]    |               ^^^^^        ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Encodable`
[INFO] [stdout]    --> crates/etherescan-indexer/src/parsers/mod.rs:100:21
[INFO] [stdout]     |
[INFO] [stdout] 100 |     use alloy_rlp::{Encodable, BytesMut};
[INFO] [stdout]     |                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `etherescan_common::db::ClickHouseClient`
[INFO] [stdout]  --> crates/etherescan-indexer/src/sink/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use etherescan_common::db::ClickHouseClient;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ContractRow` and `TransactionRow`
[INFO] [stdout]   --> crates/etherescan-indexer/src/sync.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 |     BlockRow, ContractRow, GasStatsRow, TokenTransferRow, TransactionRow,
[INFO] [stdout]    |               ^^^^^^^^^^^                                 ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `detect_contract_creation` and `parse_erc20_transfers`
[INFO] [stdout]   --> crates/etherescan-indexer/src/sync.rs:20:22
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::parsers::{parse_erc20_transfers, detect_contract_creation};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]   --> crates/etherescan-indexer/src/main.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tracing::{error, info, warn};
[INFO] [stdout]    |               ^^^^^        ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Encodable`
[INFO] [stdout]    --> crates/etherescan-indexer/src/parsers/mod.rs:100:21
[INFO] [stdout]     |
[INFO] [stdout] 100 |     use alloy_rlp::{Encodable, BytesMut};
[INFO] [stdout]     |                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `etherescan_common::db::ClickHouseClient`
[INFO] [stdout]  --> crates/etherescan-indexer/src/sink/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use etherescan_common::db::ClickHouseClient;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ContractRow` and `TransactionRow`
[INFO] [stdout]   --> crates/etherescan-indexer/src/sync.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 |     BlockRow, ContractRow, GasStatsRow, TokenTransferRow, TransactionRow,
[INFO] [stdout]    |               ^^^^^^^^^^^                                 ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `detect_contract_creation` and `parse_erc20_transfers`
[INFO] [stdout]   --> crates/etherescan-indexer/src/sync.rs:20:22
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::parsers::{parse_erc20_transfers, detect_contract_creation};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `post`
[INFO] [stdout]  --> crates/etherescan-api/src/main.rs:8:20
[INFO] [stdout]   |
[INFO] [stdout] 8 |     routing::{get, post},
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TokenTransferResponse`
[INFO] [stdout]   --> crates/etherescan-api/src/routes/tokens.rs:13:57
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::routes::addresses::{PaginatedTokenTransfers, TokenTransferResponse};
[INFO] [stdout]    |                                                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cache::CacheService`
[INFO] [stdout]  --> crates/etherescan-api/src/services/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use cache::CacheService;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `post`
[INFO] [stdout]  --> crates/etherescan-api/src/main.rs:8:20
[INFO] [stdout]   |
[INFO] [stdout] 8 |     routing::{get, post},
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TokenTransferResponse`
[INFO] [stdout]   --> crates/etherescan-api/src/routes/tokens.rs:13:57
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::routes::addresses::{PaginatedTokenTransfers, TokenTransferResponse};
[INFO] [stdout]    |                                                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cache::CacheService`
[INFO] [stdout]  --> crates/etherescan-api/src/services/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use cache::CacheService;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/etherescan-indexer/src/sync.rs:119:13
[INFO] [stdout]     |
[INFO] [stdout] 119 |         let mut transactions = Vec::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/etherescan-indexer/src/sync.rs:120:13
[INFO] [stdout]     |
[INFO] [stdout] 120 |         let mut token_transfers = Vec::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/etherescan-indexer/src/sync.rs:121:13
[INFO] [stdout]     |
[INFO] [stdout] 121 |         let mut contracts = Vec::new();
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/etherescan-indexer/src/sync.rs:119:13
[INFO] [stdout]     |
[INFO] [stdout] 119 |         let mut transactions = Vec::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/etherescan-indexer/src/sync.rs:120:13
[INFO] [stdout]     |
[INFO] [stdout] 120 |         let mut token_transfers = Vec::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/etherescan-indexer/src/sync.rs:121:13
[INFO] [stdout]     |
[INFO] [stdout] 121 |         let mut contracts = Vec::new();
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERC20_TRANSFER_TOPIC` is never used
[INFO] [stdout]  --> crates/etherescan-indexer/src/parsers/mod.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const ERC20_TRANSFER_TOPIC: &str = "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_erc20_transfers` is never used
[INFO] [stdout]   --> crates/etherescan-indexer/src/parsers/mod.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn parse_erc20_transfers(tx: &Transaction, block_number: u64) -> Option<Vec<TokenTransferRow>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_contract_creation` is never used
[INFO] [stdout]   --> crates/etherescan-indexer/src/parsers/mod.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn detect_contract_creation(tx: &Transaction, block_number: u64) -> Option<ContractRow> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_contract_address` is never used
[INFO] [stdout]   --> crates/etherescan-indexer/src/parsers/mod.rs:98:4
[INFO] [stdout]    |
[INFO] [stdout] 98 | fn calculate_contract_address(sender: &Address, nonce: u64) -> Address {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_likely_erc20_token` is never used
[INFO] [stdout]    --> crates/etherescan-indexer/src/parsers/mod.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn is_likely_erc20_token(bytecode: &[u8]) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_transfer_log` is never used
[INFO] [stdout]    --> crates/etherescan-indexer/src/parsers/mod.rs:186:8
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub fn parse_transfer_log(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FullBlockSyncer` is never constructed
[INFO] [stdout]    --> crates/etherescan-indexer/src/sync.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct FullBlockSyncer {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `run`, and `sync_batch` are never used
[INFO] [stdout]    --> crates/etherescan-indexer/src/sync.rs:234:12
[INFO] [stdout]     |
[INFO] [stdout] 232 | impl FullBlockSyncer {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 233 |     /// Create a new full block syncer
[INFO] [stdout] 234 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub async fn run(&self, poll_interval: Duration) -> Result<()> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     async fn sync_batch(&self) -> Result<usize> {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERC20_TRANSFER_TOPIC` is never used
[INFO] [stdout]  --> crates/etherescan-indexer/src/parsers/mod.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const ERC20_TRANSFER_TOPIC: &str = "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_erc20_transfers` is never used
[INFO] [stdout]   --> crates/etherescan-indexer/src/parsers/mod.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn parse_erc20_transfers(tx: &Transaction, block_number: u64) -> Option<Vec<TokenTransferRow>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_contract_creation` is never used
[INFO] [stdout]   --> crates/etherescan-indexer/src/parsers/mod.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn detect_contract_creation(tx: &Transaction, block_number: u64) -> Option<ContractRow> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_contract_address` is never used
[INFO] [stdout]   --> crates/etherescan-indexer/src/parsers/mod.rs:98:4
[INFO] [stdout]    |
[INFO] [stdout] 98 | fn calculate_contract_address(sender: &Address, nonce: u64) -> Address {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_likely_erc20_token` is never used
[INFO] [stdout]    --> crates/etherescan-indexer/src/parsers/mod.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn is_likely_erc20_token(bytecode: &[u8]) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_transfer_log` is never used
[INFO] [stdout]    --> crates/etherescan-indexer/src/parsers/mod.rs:186:8
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub fn parse_transfer_log(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FullBlockSyncer` is never constructed
[INFO] [stdout]    --> crates/etherescan-indexer/src/sync.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct FullBlockSyncer {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `run`, and `sync_batch` are never used
[INFO] [stdout]    --> crates/etherescan-indexer/src/sync.rs:234:12
[INFO] [stdout]     |
[INFO] [stdout] 232 | impl FullBlockSyncer {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 233 |     /// Create a new full block syncer
[INFO] [stdout] 234 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub async fn run(&self, poll_interval: Duration) -> Result<()> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     async fn sync_batch(&self) -> Result<usize> {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `contract`
[INFO] [stdout]   --> crates/etherescan-api/src/routes/contracts.rs:75:9
[INFO] [stdout]    |
[INFO] [stdout] 75 |     let contract = state
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contract`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `contract`
[INFO] [stdout]   --> crates/etherescan-api/src/routes/contracts.rs:75:9
[INFO] [stdout]    |
[INFO] [stdout] 75 |     let contract = state
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contract`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenBalanceResponse` is never constructed
[INFO] [stdout]   --> crates/etherescan-api/src/routes/addresses.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct TokenBalanceResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `number` and `hash` are never read
[INFO] [stdout]    --> crates/etherescan-api/src/routes/blocks.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 319 |     struct RpcBlockWithTxs {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] 320 |         number: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 321 |         hash: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timestamp` is never read
[INFO] [stdout]   --> crates/etherescan-api/src/routes/stats.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct BlockResponse {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 40 |     number: String,
[INFO] [stdout] 41 |     timestamp: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `number` and `hash` are never read
[INFO] [stdout]   --> crates/etherescan-api/src/routes/transactions.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 80 | struct RpcBlock {
[INFO] [stdout]    |        -------- fields in this struct
[INFO] [stdout] 81 |     number: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 82 |     hash: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CacheService` is never constructed
[INFO] [stdout]   --> crates/etherescan-api/src/services/cache.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct CacheService {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> crates/etherescan-api/src/services/cache.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl CacheService {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 19 |     /// Create a new cache service
[INFO] [stdout] 20 |     pub fn new(redis: Arc<RedisClient>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub async fn get_block(&self, number: u64) -> Result<Option<BlockResponse>> {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub async fn cache_block(&self, block: &BlockResponse) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub async fn get_transaction(&self, hash: &str) -> Result<Option<TransactionResponse>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub async fn cache_transaction(&self, tx: &TransactionResponse) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub async fn get_gas_prices(&self) -> Result<Option<GasPricesResponse>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub async fn cache_gas_prices(&self, prices: &GasPricesResponse) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub async fn get_network_stats(&self) -> Result<Option<NetworkStatsResponse>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub async fn cache_network_stats(&self, stats: &NetworkStatsResponse) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub async fn get_eth_price(&self) -> Result<Option<f64>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub async fn cache_eth_price(&self, price: f64) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub async fn check_rate_limit(&self, ip: &str, limit: i64) -> Result<bool> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `AddressActivity`, `Subscribed`, `Unsubscribed`, `Pong`, and `Error` are never constructed
[INFO] [stdout]    --> crates/etherescan-api/src/ws/mod.rs:94:5
[INFO] [stdout]     |
[INFO] [stdout]  88 | pub enum WsResponse {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  94 |     AddressActivity { address: String, tx: TxEvent },
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]  95 |     #[serde(rename = "subscribed")]
[INFO] [stdout]  96 |     Subscribed { channels: Vec<String> },
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]  97 |     #[serde(rename = "unsubscribed")]
[INFO] [stdout]  98 |     Unsubscribed { channels: Vec<String> },
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]  99 |     #[serde(rename = "pong")]
[INFO] [stdout] 100 |     Pong,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 101 |     #[serde(rename = "error")]
[INFO] [stdout] 102 |     Error { message: String },
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenBalanceResponse` is never constructed
[INFO] [stdout]   --> crates/etherescan-api/src/routes/addresses.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct TokenBalanceResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `number` and `hash` are never read
[INFO] [stdout]    --> crates/etherescan-api/src/routes/blocks.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 319 |     struct RpcBlockWithTxs {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] 320 |         number: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 321 |         hash: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timestamp` is never read
[INFO] [stdout]   --> crates/etherescan-api/src/routes/stats.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct BlockResponse {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 40 |     number: String,
[INFO] [stdout] 41 |     timestamp: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `number` and `hash` are never read
[INFO] [stdout]   --> crates/etherescan-api/src/routes/transactions.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 80 | struct RpcBlock {
[INFO] [stdout]    |        -------- fields in this struct
[INFO] [stdout] 81 |     number: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 82 |     hash: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CacheService` is never constructed
[INFO] [stdout]   --> crates/etherescan-api/src/services/cache.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct CacheService {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> crates/etherescan-api/src/services/cache.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl CacheService {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 19 |     /// Create a new cache service
[INFO] [stdout] 20 |     pub fn new(redis: Arc<RedisClient>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub async fn get_block(&self, number: u64) -> Result<Option<BlockResponse>> {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub async fn cache_block(&self, block: &BlockResponse) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub async fn get_transaction(&self, hash: &str) -> Result<Option<TransactionResponse>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub async fn cache_transaction(&self, tx: &TransactionResponse) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub async fn get_gas_prices(&self) -> Result<Option<GasPricesResponse>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub async fn cache_gas_prices(&self, prices: &GasPricesResponse) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub async fn get_network_stats(&self) -> Result<Option<NetworkStatsResponse>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub async fn cache_network_stats(&self, stats: &NetworkStatsResponse) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub async fn get_eth_price(&self) -> Result<Option<f64>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub async fn cache_eth_price(&self, price: f64) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub async fn check_rate_limit(&self, ip: &str, limit: i64) -> Result<bool> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `AddressActivity`, `Subscribed`, `Unsubscribed`, `Pong`, and `Error` are never constructed
[INFO] [stdout]    --> crates/etherescan-api/src/ws/mod.rs:94:5
[INFO] [stdout]     |
[INFO] [stdout]  88 | pub enum WsResponse {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  94 |     AddressActivity { address: String, tx: TxEvent },
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]  95 |     #[serde(rename = "subscribed")]
[INFO] [stdout]  96 |     Subscribed { channels: Vec<String> },
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]  97 |     #[serde(rename = "unsubscribed")]
[INFO] [stdout]  98 |     Unsubscribed { channels: Vec<String> },
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]  99 |     #[serde(rename = "pong")]
[INFO] [stdout] 100 |     Pong,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 101 |     #[serde(rename = "error")]
[INFO] [stdout] 102 |     Error { message: String },
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 11s
[INFO] [stderr] crater-edition-check all packages now at latest edition
[INFO] [stderr] crater-edition-check: all finished
[INFO] running `Command { std: "docker" "inspect" "41cc31ebe366588e68094cb6b96fca02abd639371427ffe3aef5a751504ac0a1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "41cc31ebe366588e68094cb6b96fca02abd639371427ffe3aef5a751504ac0a1", kill_on_drop: false }`
[INFO] [stdout] 41cc31ebe366588e68094cb6b96fca02abd639371427ffe3aef5a751504ac0a1
